#ifndef AI_STATE_H
#define AI_STATE_H

class AIAgent;
class Behaviour;

#include "Vec3.h"
#include <map>

typedef std::map<Behaviour*, float> BehaviourAndWeightMap;
typedef std::pair<Behaviour*, float> BehaviourAndWeight;

class AIState
{
public:
	

	AIState(AIAgent* agent);
	virtual ~AIState();
	virtual void InsertBehaviour(Behaviour* behaviour, float weight);
	virtual Vec3f Update() = 0;
	void DebugDrawForces();
	virtual void OnActivated() {}
	virtual void OnDeactivated() {}
	virtual const char* GetStateName() const = 0;
	Vec3f SumForces();

	BehaviourAndWeightMap* GetBehaviours();

protected: 
	//typedef std::pair<Behaviour, float> BehaviourAndWeight;
	AIAgent* m_pAgent;
	BehaviourAndWeightMap m_behaviourMap;

	
	
};

#endif
